DirectX Graphics
den immediate Mode und den retained
Mode.
Der immediate(unmittelbar)
Mode ist der Low-Level Teil der API,
er ist sehr hardwarenah und der
Programmierer hat die Möglichkeit,
alles direkt anzufassen und zu benutzen.
Der immediate Mode ist dadurch sehr
schnell.
Der retained(zurückhaltend) Mode ist
der High-Level Teil der API. Er ist weiter
von der Hardware entfernt und daher
langsamer als der immediate Mode,
demgegenüber bietet er aber
mehr
Komfort, so ist es zum Beispiel möglich,
ein definiertes Objekt unbekannter
Programmstruktur mit Texturen in eine
Anwendung zu laden und dort mit
den Befehlen welche dieser Mode bietet
in Echtzeit zu manipulieren.
Pixel- und Vertexshader. Parallel
zu diesen existieren aber weiterhin
die T&L (Transform&Lighting) –
Engine und Multitexturing. Es bleibt
an dieser Stelle also dem Programmierer
überlassen, welche dieser Varianten
er benutzen möchte.
In Directx Graphics wurde DirectDraw
in Direct3D mit eingegliedert, weil sich
an DirectDraw in den letzten Versionen
ausser kleinen Optimierungen kaum
noch etwas geändert hat.
Die grösste Neuerung jedoch in Bezug auf DX6/7
stellen die programmierbaren
Shader, Pixel- und Vertexshader da. Diese sind in
den Grafikchip integriert und
geben dem Programmierer die Möglichkeit, Algorithmen
zu schreiben, die auf
einzelne Vertices oder Pixel angewendet werden
können. Es können auch auf unterschiedliche Vertices/Pixel unterschiedliche
Algorithmen angewandt werden,
ganz nach Wunsch. Da die Anwendung dieser
Algorithmen in der diesbezüglich
optimierten Hardware geschieht bekommt man mit den
Shadern eine gute
Performance für diese per-Vertex- und
per-Pixel-Operationen.
Für diese Shader gibt es Sprachen, um die
Hardware-Shader zu schreiben.
Für den Pixelshader nennt sich sich diese Sprache
programmierbare Pixelverarbeitungssprache (pixel processing language). Sie
ermöglicht z.B.
generelle
Texturkombinierende Ausdrücke (general texture combining expressinons),
per-pixel
lighting, nützlich für Bumpmapping, per-pixel environmant mapping
für fotorealistische speculare Effekte, und jeden
anderen Algorithmus, den der Programmierer sich definiert.
Mit der programmierbaren Vertexverarbeitungssprache
lassen sich z.B. morphing/tweening Animationen, Matrix palette skinning für
Skelettanimationen,
user-defined lighting models für eigene
Lichtmodelle, general environment mapping,
prozedurale Geometrie (procedural geometry) und auch
hier jeden weiteren vom
Entwickler definierten Algorithmus.
Weiterhin hinzugekommen seit der letzten Version von
DirectX sind Features wie
multisampling rendering support, welches Effekte wie Motion Blur, Depth-of-Field
und full scene antialiasing ermöglicht, point
sprites für Partikeleffekte und 3-D volumetric textures, womit man z.B
räumliche atmosphärische Effekte und entfernungsabhängiges per-pixel lighting
realiesieren kann.
Depth-of-Field
Per-Pixel lighting, allerdings
unter OpenGL, aber hier auch moeglich